/* ===========================================================================

	Project: VoxRender

	Description: Implements an action for undo/redo operations

    Copyright (C) 2014 Lucas Sherman

	Lucas Sherman, email: LucasASherman@gmail.com

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.

=========================================================================== */

// Include Header
#include "MaterialEditAct.h"

// Include Dependencies
#include "VoxLib/Error/Error.h"
#include "Interface/mainwindow.h"
#include "Interface/transferwidget.h"

using namespace vox;

// ----------------------------------------------------------------------------
//  Reverses the effects of a camera edit action
// ----------------------------------------------------------------------------
void MaterialEditAct::undo()
{
    auto scene = MainWindow::instance->scene();
    if (!scene) return;
    auto transfer = scene->transfer;

    auto lock = scene->lock();

    auto temp = Material::create();
    *temp = *m_material;
    *m_material = *m_reference;
    *m_reference = *temp;

    transfer->setDirty();
}